/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.adsi.vista;

import com.adsi.logica.TiposDocumentosLogicaLocal;
import com.adsi.modelo.TiposDocumentos;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author Estudiante
 */
@ManagedBean(name = "tiposDocumentosVista")
@RequestScoped
public class TiposDocumentosVista {

    @EJB
    private TiposDocumentosLogicaLocal logicaTiposDocumentos;

    private InputText txtCodigoDocumento;
    private InputText txtNombreDocumento;
    private List<TiposDocumentos> listaTipoDocumento;
    private CommandButton btnRegistrar;
    private CommandButton btnModificar;
    private CommandButton btnEliminar;
    private CommandButton btnLimpiar;
    private TiposDocumentos TipoDocumentosSeleccionado;

    public TiposDocumentosVista() {

    }

    public TiposDocumentosLogicaLocal getLogicaTiposDocumentos() {
        return logicaTiposDocumentos;
    }

    public void setLogicaTiposDocumentos(TiposDocumentosLogicaLocal logicaTiposDocumentos) {
        this.logicaTiposDocumentos = logicaTiposDocumentos;
    }

    public InputText getTxtCodigoDocumento() {
        return txtCodigoDocumento;
    }

    public void setTxtCodigoDocumento(InputText txtCodigoDocumento) {
        this.txtCodigoDocumento = txtCodigoDocumento;
    }

    public InputText getTxtNombreDocumento() {
        return txtNombreDocumento;
    }

    public void setTxtNombreDocumento(InputText txtNombreDocumento) {
        this.txtNombreDocumento = txtNombreDocumento;
    }

    public List<TiposDocumentos> getListaTipoDocumento() {
        if (listaTipoDocumento == null) {
            try {
                listaTipoDocumento = logicaTiposDocumentos.consultar();
            } catch (Exception ex) {
                Logger.getLogger(TiposDocumentosVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return listaTipoDocumento;
    }

    public void setListaTipoDocumento(List<TiposDocumentos> listaTipoDocumento) {
        this.listaTipoDocumento = listaTipoDocumento;
    }

    public CommandButton getBtnRegistrar() {
        return btnRegistrar;
    }

    public void setBtnRegistrar(CommandButton btnRegistrar) {
        this.btnRegistrar = btnRegistrar;
    }

    public CommandButton getBtnModificar() {
        return btnModificar;
    }

    public void setBtnModificar(CommandButton btnModificar) {
        this.btnModificar = btnModificar;
    }

    public CommandButton getBtnEliminar() {
        return btnEliminar;
    }

    public void setBtnEliminar(CommandButton btnEliminar) {
        this.btnEliminar = btnEliminar;
    }

    public CommandButton getBtnLimpiar() {
        return btnLimpiar;
    }

    public void setBtnLimpiar(CommandButton btnLimpiar) {
        this.btnLimpiar = btnLimpiar;
    }

    public TiposDocumentos getTipoDocumentosSeleccionado() {
        return TipoDocumentosSeleccionado;
    }

    public void setTipoDocumentosSeleccionado(TiposDocumentos TipoDocumentosSeleccionado) {
        this.TipoDocumentosSeleccionado = TipoDocumentosSeleccionado;
    }

    //Metodos CRUD
    public void funcionLimpiar() {
        txtCodigoDocumento.setValue("");
        txtNombreDocumento.setValue("");
        btnRegistrar.setDisabled(false);
        btnModificar.setDisabled(true);
        btnEliminar.setDisabled(true);
    }

    public void funcionRegistrar() {
        try {
            TiposDocumentos tipodocumento = new TiposDocumentos();
            tipodocumento.setTdocCodigo(Long.parseLong(txtCodigoDocumento.getValue().toString()));
            tipodocumento.setTdocNombre(txtNombreDocumento.getValue().toString());
            logicaTiposDocumentos.registrar(tipodocumento);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "El tipo de documento se registró exitosamente"));

        } catch (Exception ex) {
            Logger.getLogger(TiposDocumentosVista.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", ex.getMessage()));
        }
        listaTipoDocumento = null;
        funcionLimpiar();
    }

    public void funcionModificar() {
        try {
            TiposDocumentos tipodocumento = new TiposDocumentos();
            tipodocumento.setTdocCodigo(Long.parseLong(txtCodigoDocumento.getValue().toString()));
            tipodocumento.setTdocNombre(txtNombreDocumento.getValue().toString());
            logicaTiposDocumentos.modificar(tipodocumento);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "El tipo de documento se modificó exitosamente"));
        } catch (Exception ex) {
            Logger.getLogger(TiposDocumentosVista.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", ex.getMessage()));
        }
        listaTipoDocumento = null;
        funcionLimpiar();

    }

    public void funcionEliminar() {
        try {
            TiposDocumentos tipodocumentos = new TiposDocumentos();
            tipodocumentos.setTdocCodigo(Long.parseLong(txtCodigoDocumento.getValue().toString()));
            logicaTiposDocumentos.eliminar(tipodocumentos);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "El tipo de documento se eliminó exitosamente"));
        } catch (Exception ex) {
            Logger.getLogger(TiposDocumentosVista.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", ex.getMessage()));

        }
        listaTipoDocumento = null;
        funcionLimpiar();
    }

    public void funcionSeleccionar(SelectEvent event) {
        TiposDocumentos tiposdocumentosSeleccionado = (TiposDocumentos) event.getObject();
        txtCodigoDocumento.setValue(tiposdocumentosSeleccionado.getTdocCodigo());
        txtNombreDocumento.setValue(tiposdocumentosSeleccionado.getTdocNombre());
        txtCodigoDocumento.setDisabled(true);
        btnRegistrar.setDisabled(true);
        btnEliminar.setDisabled(false);
        btnModificar.setDisabled(false);

    }

}
